Переписать часть кода на Pyhton для парсинга аудидорожек с видео (Бюджет: 3000 руб)

Дата публикации: 20.11.2024 23:47:53
Бюджет: 3000 руб
Здравствуйте необходимо переписать часть кода на Pyhton для парсинга аудидорожек с видео  код: baseurl = os.getenv("BASEURL", BASEURL) debug = os.getenv("DEBUG", DEBUG) audio_chunk_segments = os.getenv("AUDIO_CHUNK_SEGMENTS", AUDIO_CHUNK_SEGMENTS) video_chunk_segments = os.getenv("VIDEO_CHUNK_SEGMENTS", VIDEO_CHUNK_SEGMENTS) safe_chunk_len = os.getenv("SAFE_CHUNK_LEN", SAFE_CHUNK_LEN) referer = os.getenv("REFERER", REFERER) # obtain XML with video segments description print("Get video description... ", end='') mpd_req = urllib.request.Request(f"{baseurl}/{video_id}/master.mpd") mpd_req.add_header('Referer', referer) mpd_raw = urllib.request.urlopen(mpd_req).read() # or can be read from file # with open("master.mpd", 'r') as f: #     mpd_raw = f.read() # parse XML into internal object mpd = xmltodict.parse(mpd_raw) print("Done.\n") # To get any media segment, we need provide its URL and 'Range' header # this info present in XML description # mpd['MPD']['Period']['AdaptationSet'][0]["Representation"] array of video streams with different resolutions # mpd['MPD']['Period']['AdaptationSet'][1]["Representation"] the only audio stream # the first media segment described in ["SegmentList"]["Initialization"] field # all others array of URL/range pairs at ["SegmentList"]["SegmentURL"] # Download audio stream print("Get audio stream...") # First, we are prepare to download init segment for this stream audio_url = mpd['MPD']['Period']['AdaptationSet'][1]["Representation"]["SegmentList"][" Initialization"]["@sourceURL"] bytes_range = mpd['MPD']['Period']['AdaptationSet'][1]["Representation"]["SegmentList"][" Initialization"]["@range"] # create request object audio_req = urllib.request.Request(audio_url) # add actual Range header audio_req.add_header('Range', f"bytes={bytes_range}") # download init segment audio = urllib.request.urlopen(audio_req).read() # Download all other segments for this stream audio += get_segments(     audio_req,     mpd['MPD']['Period']['AdaptationSet'][1]["Representation"]["SegmentList"][" SegmentURL"],     audio_chunk_segments ) # Save audio stream in temporary file with open(f"{video_id}.audio", "wb") as f:     f.write(audio) print("Audio stream done.\n") # Download video stream print("Get video stream...") # get the best available resolution max_width = int(mpd['MPD']['Period']['AdaptationSet'][0]["@maxWidth"]) video = b'' for video_stream in mpd['MPD']['Period']['AdaptationSet'][0]["Representation"]:     # skip low resolution video streams     if int(video_stream["@width"]) < max_width:         continue     video_url = video_stream["SegmentList"]["Initialization"]["@sourceURL"]     bytes_range = video_stream["SegmentList"]["Initialization"]["@range"]     video_req = urllib.request.Request(video_url)     video_req.add_header('Range', f"bytes={bytes_range}")     video = urllib.request.urlopen(video_req).read()     video += get_segments(         video_req,         video_stream["SegmentList"]["SegmentURL"],         video_chunk_segments     )     # we need only one video stream     break # save video stream in temporary file with open(f"{video_id}.video", "wb") as f:     f.write(video) print("Video stream done.\n") # Combine audio and video streams in one ready-to-play MP4 container convert_cmd = f"ffmpeg -y -i {video_id}.video -i {video_id}.audio -c copy -bsf:a aac_adtstoasc {video_name}.mp4" print("Converting video file... ", end='') sys.stdout.flush() run_res = subprocess.run(convert_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if run_res.returncode:     err_exit(f"Error video convert invocation: {run_res.stderr.decode()}") else:     os.unlink(f"{video_id}.audio")     os.unlink(f"{video_id}.video")     print(f"Done: {video_name}.mp4") pass === скрипт нужно запускать на серваке под любые видео например для парсинга аудио с видео в кинескоп или вк видео С ув Роман
Источник: www.fl.ru
Число просмотров: 2

Еще проекты:

Картинку перевести в кривую линию для резки

Сделать рисунок чертеж линией. Чтобы можно было нарезать на станке лазерном.

Парсинг данных в Content Downloader X1 (Бюджет: 1500 руб/час)

Необходимо настроить парсинг в Content Downloader X1 или на PHP, Python для возможности повторного парсинга.
Пример ссылки для парсинга:...

Ищу специалиста для поиска референсов и чернового монтажа видео-сниппета до 30 секунд под песню (Бюд

Здравствуйте!   Ищу специалиста для реализации проекта:   1. На основе нашей идеи (текст и предоставленные картинки) найти подходящие видео-референсы.   2. Смонтировать черновую версию видео-сниппета (до 30 секунд) для продвижения песни.   Требования:   - Опыт работы с короткими видео-форматами для TikTok и Instagram Reels.   - Понимание визуальных и музыкальных трендов в соцсетях.   - Умение работать с референсами и создавать динамичный черновой монтаж.   Проект ориентирован на со...

Создание приложения для изучения иностранных языков (бекенд + фронт) (Бюджет: 100000 руб)

Итак, есть макет приложения, приложение делится на 3 типа 1) Читалка 2) Слушать 3) Словарь с возможностью рандомного показа слов (с возможностью угадывать или вспоминать перевод) 1) Читалка: Администратор вводит текст далее выбирает слово или словосочетание и добавляет перевод на несколько языков.  Категории: Каждый текст делится на 2 категории: 1) Уровень сложности (A1 A2 B1 B2) 2) Тематика (Образование, Еда, Строительство....)  Пользователь тыкая на слово(или словосочетание) в текс...

Моделирование фасадов зданий (Бюджет: 25000 руб)

Необходимо по фото сделать 3-д модели зданий (только оболочка лицевые фасады). Готовая работа в виде рабочего файла, оформление и визуализации не требуются. Уровень сложности зданий разный. Количество 15 штук.